home *** CD-ROM | disk | FTP | other *** search
/ ShareWare OnLine 2 / ShareWare OnLine Volume 2 (CMS Software)(1993).iso / os2 / remin301.zip / REMIN300.ZIP / TYPES.H < prev    next >
C/C++ Source or Header  |  1992-11-10  |  4KB  |  157 lines

  1. /***************************************************************/
  2. /*                                                             */
  3. /*  TYPES.H                                                    */
  4. /*                                                             */
  5. /*  Type definitions all dumped here.                          */
  6. /*                                                             */
  7. /*  This file is part of REMIND.                               */
  8. /*  Copyright (C) 1991 by David F. Skoll.                      */
  9. /*                                                             */
  10. /***************************************************************/
  11. /* Values */
  12. typedef struct {
  13.    char type;
  14.    union {
  15.       char *str;
  16.       int val;
  17.    } v;
  18. } Value;
  19.  
  20. /* Define the type of operators */
  21. typedef struct {
  22.    char *name;
  23.    char prec;
  24.    char type;
  25. #ifdef HAVE_PROTOS
  26.    int (*func)(void);
  27. #else
  28.    int (*func) ();
  29. #endif
  30. } Operator;
  31.  
  32. /* Define the structure of a variable */
  33. typedef struct var {
  34.    struct var *next;
  35.    char name[VAR_NAME_LEN+1];
  36.    char preserve;
  37.    Value v;
  38. } Var;
  39.  
  40. /* A trigger */
  41. typedef struct {
  42.    int wd;
  43.    int d;
  44.    int m;
  45.    int y;
  46.    int back;
  47.    int delta;
  48.    int rep;
  49.    int localomit;
  50.    int skip;
  51.    int until;
  52.    int typ;
  53.    int once;
  54. } Trigger;
  55.  
  56. /* A time trigger */
  57. typedef struct {
  58.    int ttime;
  59.    int nexttime;
  60.    int delta;
  61.    int rep;
  62. } TimeTrig;
  63.  
  64. /* The parse pointer */
  65. typedef struct {
  66.    char isnested;        /* Is it a nested expression? */
  67.    char allownested;
  68.    char *text;           /* Start of text */
  69.    char *pos;            /* Current position */
  70.    char *etext;          /* Substituted text */
  71.    char *epos;           /* Position in substituted text */
  72. } Parser;
  73.  
  74. typedef Parser *ParsePtr;  /* Pointer to parser structure */
  75.  
  76. /* Some useful manifest constants */
  77. #define NO_BACK 0
  78. #define NO_DELTA 0
  79. #define NO_REP 0
  80. #define NO_WD 0
  81. #define NO_DAY -1
  82. #define NO_MON -1
  83. #define NO_YR -1
  84. #define NO_UNTIL -1
  85. #define NO_ONCE 0
  86. #define ONCE_ONCE 1
  87.  
  88. #define NO_SKIP 0
  89. #define SKIP_SKIP 1
  90. #define BEFORE_SKIP 2
  91. #define AFTER_SKIP 3
  92.  
  93. #define NO_TIME 1500 /* >1440, ie > than the largest possible legal time */
  94.  
  95. #define NO_TYPE  0
  96. #define MSG_TYPE 1
  97. #define RUN_TYPE 2
  98. #define CAL_TYPE 3
  99. #define SAT_TYPE 4
  100.  
  101. /* DEFINES for debugging flags */
  102. #define DB_PRTLINE   1
  103. #define DB_PRTEXPR   2
  104. #define DB_PRTTRIG   4
  105. #define DB_DUMP_VARS 8
  106. #define DB_ECHO_LINE 16
  107.  
  108. /* Enumeration of the tokens */
  109. enum TokTypes
  110. { T_Illegal,
  111.   /* Commands first */
  112.   T_Rem, T_Push, T_Pop, T_Preserve, T_Include, T_If, T_Else, T_EndIf,
  113.   T_IfTrig, T_ErrMsg,
  114.   T_Set, T_UnSet, T_Fset, T_Omit, T_Banner, T_Exit,
  115.   T_WkDay,
  116.   T_Month, T_Time,
  117.   T_Skip, T_At, T_RemType, T_Until, T_Year, T_Day, T_Rep, T_Delta, T_Back,
  118.   T_Once,
  119.   T_Empty,
  120.   T_Comment,
  121.   T_Number,
  122.   T_Clr,
  123.   T_Debug,
  124.   T_Dumpvars
  125. };
  126.  
  127. /* The structure of a token */
  128. typedef struct {
  129.    char *name;
  130.    char MinLen;
  131.    enum TokTypes type;
  132.    int val;
  133. } Token;
  134.  
  135. /* Flags for the state of the "if" stack */
  136. #define IF_TRUE      0
  137. #define IF_FALSE     1
  138. #define BEFORE_ELSE  0
  139. #define AFTER_ELSE   2
  140. #define IF_MASK      3
  141. #define IF_TRUE_MASK 1
  142. #define IF_ELSE_MASK 2
  143.  
  144. /* Flags for the DoSubst function */
  145. #define NORMAL_MODE 0
  146. #define CAL_MODE 1
  147. #define QUOTE_MARKER 1 /* Unlikely character to appear in reminder */
  148.  
  149. /* Flags for disabling run */
  150. #define RUN_CMDLINE 1
  151. #define RUN_SCRIPT  2
  152.  
  153. /* Flags for the SimpleCalendar format */
  154. #define SC_AMPM   0   /* Time shown as 3:00am, etc. */
  155. #define SC_MIL    1   /* 24-hour time format */
  156. #define SC_NOTIME 2   /* Do not display time in SC format. */
  157.